Contents

1 Knit Options

knitr::opts_chunk$set(message = FALSE)

2 Packages

library(magrittr)
library(tibble)
library(MultiAssayExperiment)
library(SummarizedExperiment)
library(S4Vectors)
library(usethis)
library(dplyr)
library(plotly)
library(tsne)
library(reshape2)
library(caret)
library(vegan)
library(ape)
library(DESeq2)
library(ggplot2)
library(forcats)
library(grid)
library(lattice)
library(plotROC)
library(animalcules)

3 Load Toy Dataset

This toy dataset contains 50 simulated samples. Throughout the vignette, we will use the data structure MultiAssayExperiment (MAE) as the input to all functions.

data_dir = system.file("extdata/MAE.rds", package = "animalcules")
MAE = readRDS(data_dir)

4 Run Shiny App

To run the shiny app, just call: run_animalcules(). The rest of the vignette is for the command line version of animalcules.

# run_animalcules()

5 Summary and Categorize

One of the first steps in the data analysis process involves summarizing the data and looking for outliers or other obvious data issues that may cause issue with downstream analysis.

5.1 Summary Plot Top

One type of summarization plot returns either a box plot or pie chart for continous or categorical data respectively.

p <- filter_summary_top(MAE,
                        samples_discard = c("subject_2", "subject_4"),
                        filter_type = "By Metadata",
                        sample_condition = "AGE")
p

5.2 Summary Plot Bottom

One type of summarization plot returns either a density plot or bar plot for continous or categorical data respectively.

p <- filter_summary_bottom(MAE,
                           samples_discard = c("subject_2", "subject_4"),
                           filter_type = "By Metadata",
                           sample_condition = "SEX")
p

5.3 Categorize

It is often necessary to bin continuous data into categories when performing analyses that require categorical input. To help ease this process, users can automatically categorize categorical data and provide custom bin breaks and labels in doing so.

microbe <- MAE[['MicrobeGenetics']]
samples <- as.data.frame(colData(microbe))
result <- filter_categorize(samples,
                            sample_condition = "AGE",
                            new_label="AGE_GROUP",
                            bin_breaks=c(0,55,75,100),
                            bin_labels=c('Young','Adult',"Elderly"))
result$sam_table
##            AGE    SEX  DISEASE GROUP AGE_GROUP
## subject_1   34 Female positive     A     Young
## subject_2   61   Male positive     A     Adult
## subject_3   62   Male positive     A     Adult
## subject_4   95 Female positive     B   Elderly
## subject_5   30 Female positive     A     Young
## subject_6   80 Female positive     B   Elderly
## subject_7   59   Male positive     B     Adult
## subject_8   60   Male positive     C     Adult
## subject_9   55   Male positive     B     Young
## subject_10  60   Male positive     B     Adult
## subject_11  71 Female negative     C     Adult
## subject_12  91   Male positive     A   Elderly
## subject_13   8 Female positive     B     Young
## subject_14  60   Male negative     A     Adult
## subject_15   1 Female negative     B     Young
## subject_16  40 Female positive     A     Young
## subject_17  48   Male negative     B     Young
## subject_18  21   Male negative     A     Young
## subject_19  66   Male positive     B     Adult
## subject_20  20 Female negative     B     Young
## subject_21   6 Female negative     A     Young
## subject_22  19   Male negative     A     Young
## subject_23  75   Male negative     C     Adult
## subject_24  99   Male negative     C   Elderly
## subject_25  30 Female negative     C     Young
## subject_26  77 Female negative     B   Elderly
## subject_27  36 Female negative     B     Young
## subject_28  63 Female negative     A     Adult
## subject_29  91   Male negative     A   Elderly
## subject_30  62 Female positive     B     Adult
## subject_31  24 Female positive     B     Young
## subject_32  84   Male positive     B   Elderly
## subject_33  77   Male positive     B   Elderly
## subject_34  13 Female positive     A     Young
## subject_35  60   Male negative     A     Adult
## subject_36  66   Male positive     B     Adult
## subject_37  89   Male negative     C   Elderly
## subject_38  98   Male positive     A   Elderly
## subject_39  37   Male positive     A     Young
## subject_40  48   Male positive     A     Young
## subject_41  35   Male positive     B     Young
## subject_42  23   Male positive     C     Young
## subject_43  56   Male negative     B     Adult
## subject_44  78   Male negative     A   Elderly
## subject_45  29 Female positive     C     Young
## subject_46  53   Male negative     A     Young
## subject_47  78   Male positive     B   Elderly
## subject_48  35 Female positive     A     Young
## subject_49  92 Female negative     C   Elderly
## subject_50  36 Female negative     C     Young
result$plot.unbinned
result$plot.binned

6 Visualization

A typical analysis involves visualization of microbe abundances across samples or groups of samples. Animalcules implements three common types of visualization plots including stacked bar plots, heat map, and box plots generated with Plotly.

6.1 Relative Abundance Stacked Bar Plot

The stacked bar plots are used to visualize the relative abundance of microbes at a given taxonomical level in each sample represented as a single bar.

p <- relabu_barplot(MAE,
                    tax_level="family",
                    order_organisms=c('Retroviridae'),
                    sort_by="organisms",
                    sample_conditions=c('SEX', 'AGE'),
                    show_legend=TRUE)
p

6.2 Relative Abundance Heatmap

The heatmap represents a sample by organisms matrix that can be visualized at different taxonomic levels.

p <- relabu_heatmap(MAE,
                   tax_level="genus",
                   sort_by="conditions",
                   sample_conditions=c("SEX", "AGE"))
p

6.3 Relative Abundance Boxplot

The boxplot visualization allows users to compare the abundance of one or more organisms between categorical attributes.

p <- relabu_boxplot(MAE,
                    tax_level="genus",
                    organisms=c("Escherichia", "Actinomyces"),
                    condition="SEX",
                    datatype="logcpm")
p
## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels

## Warning in RColorBrewer::brewer.pal(N, "Set2"): minimal value for n is 3, returning requested palette with 3 different levels
## Warning: 'layout' objects don't have these attributes: 'boxmode'
## Valid attributes include:
## 'font', 'title', 'titlefont', 'autosize', 'width', 'height', 'margin', 'paper_bgcolor', 'plot_bgcolor', 'separators', 'hidesources', 'showlegend', 'colorway', 'datarevision', 'template', 'dragmode', 'hovermode', 'hoverdistance', 'spikedistance', 'hoverlabel', 'selectdirection', 'grid', 'calendar', 'xaxis', 'yaxis', 'ternary', 'scene', 'geo', 'mapbox', 'polar', 'radialaxis', 'angularaxis', 'direction', 'orientation', 'editType', 'legend', 'annotations', 'shapes', 'images', 'updatemenus', 'sliders', 'barmode', 'bargap', 'mapType'

7 Diversity

7.1 Alpha Diversity Boxplot

Alpha diversity, which describes the richness and evenness of sample microbial community, is a vital indicator in the microbiome analysis. animalcules provides the interactive boxplot comparison of alpha diversity between selected groups of samples. Both taxonomy levels and alpha diversity metrics (Shannon, Gini Simpson, Inverse Simpson) can be changed. Users can also conduct alpha diversity statistical tests including Wilcoxon rank sum test, T test and Kruskal-Wallis test.

Plot the alpha diversity boxplot between the levels in selected condition.

alpha_div_boxplot(MAE = MAE,
                  tax_level = "genus",
                  condition = "DISEASE",
                  alpha_metric = "shannon")

7.2 Alpha Diversity Statistical Test

Conduct statistical test on the alpha diversity between the levels in selected condition.

do_alpha_div_test(MAE = MAE,
                  tax_level = "genus",
                  condition = "DISEASE",
                  alpha_metric = "shannon",
                  alpha_stat = "T-test")
##         Wilcoxon rank sum test Welch Two Sample t-test
## P-value              0.3667155               0.4879632

7.3 Beta Diversity Heatmap

On the other hand, by defining distances between each sample, beta diversity is another key metric to look at. Users can plot the beta diversity heatmap by selecting different beta diversity dissimilarity metrics including Bray-Curtis and Jaccard. Users can also conduct beta diversity statistical testing between groups including PERMANOVA, Wilcoxon rank sum test and Kruskal-Wallis.

Plot the beta diversity heatmap with selected condition.

diversity_beta_heatmap(MAE = MAE, 
                       tax_level = 'genus', 
                       input_beta_method = "bray",
                       input_bdhm_select_conditions = 'DISEASE',
                       input_bdhm_sort_by = 'condition')

7.4 Beta Diversity Boxplot

Plot the beta diversity boxplot within and between conditions.

diversity_beta_boxplot(MAE = MAE, 
                       tax_level = 'genus', 
                       input_beta_method = "bray",
                       input_select_beta_condition = 'DISEASE')

7.5 Beta Diversity Test

Conduct statistical test on the beta diversity between the levels in selected condition.

diversity_beta_test(MAE = MAE, 
                    tax_level = 'genus',
                    input_beta_method = "bray",
                    input_select_beta_condition =  'DISEASE',
                    input_select_beta_stat_method = 'PERMANOVA',
                    input_num_permutation_permanova = 999)
## Permutation test for adonis under reduced model
## Terms added sequentially (first to last)
## Permutation: free
## Number of permutations: 999
## 
## vegan::adonis2(formula = dist.mat ~ condition, data = sam_table, permutations = input_num_permutation_permanova, strata = "PLOT")
##           Df SumOfSqs      R2      F Pr(>F)
## condition  1   0.2066 0.01495 0.7283  0.683
## Residual  48  13.6149 0.98505              
## Total     49  13.8215 1.00000

8 Dimensionality Reduction

8.1 PCA

A wrapper for conduction 2D and 3D Principal Component Analysis.

result <- dimred_pca(MAE,
                     tax_level="genus",
                     color="AGE",
                     shape="DISEASE",
                     pcx=1,
                     pcy=2,
                     datatype="logcpm")
#result$plot
result$table
##        PC  Standard Deviation Variance Explained Cumulative Variance
## PC1   PC1     2.5599634292793              10.4%               10.4%
## PC2   PC2    2.19272108550489               7.6%               18.0%
## PC3   PC3    2.00513673550525               6.4%               24.4%
## PC4   PC4    1.87545892419787               5.6%               30.0%
## PC5   PC5    1.80253703972772               5.2%               35.2%
## PC6   PC6    1.70630724920304               4.6%               39.8%
## PC7   PC7    1.66547786633967               4.4%               44.2%
## PC8   PC8    1.60985175294652               4.1%               48.3%
## PC9   PC9    1.58856744410038               4.0%               52.3%
## PC10 PC10    1.51660140077173               3.7%               56.0%
## PC11 PC11    1.46691750563179               3.4%               59.4%
## PC12 PC12    1.41860673606557               3.2%               62.6%
## PC13 PC13    1.37351370785232               3.0%               65.6%
## PC14 PC14    1.32307433543595               2.8%               68.3%
## PC15 PC15    1.27467817971347               2.6%               70.9%
## PC16 PC16    1.24384812204377               2.5%               73.4%
## PC17 PC17    1.19079223811853               2.3%               75.6%
## PC18 PC18    1.14859721371312               2.1%               77.7%
## PC19 PC19    1.12823255378002               2.0%               79.7%
## PC20 PC20    1.08105271170379               1.9%               81.6%
## PC21 PC21    1.04943830778721               1.7%               83.3%
## PC22 PC22    1.03556977559738               1.7%               85.0%
## PC23 PC23   0.971155099453354               1.5%               86.5%
## PC24 PC24    0.96854414152651               1.5%               88.0%
## PC25 PC25   0.891803703027547               1.3%               89.3%
## PC26 PC26   0.850357189158019               1.1%               90.4%
## PC27 PC27   0.839645565137874               1.1%               91.6%
## PC28 PC28   0.795399142787225               1.0%               92.6%
## PC29 PC29    0.73880941658758               0.9%               93.4%
## PC30 PC30    0.70746347120883               0.8%               94.2%
## PC31 PC31   0.704683482690471               0.8%               95.0%
## PC32 PC32    0.65805224041009               0.7%               95.7%
## PC33 PC33   0.618283026194574               0.6%               96.3%
## PC34 PC34   0.584610814368372               0.5%               96.8%
## PC35 PC35   0.537736991789387               0.5%               97.3%
## PC36 PC36    0.52006063554491               0.4%               97.7%
## PC37 PC37    0.48599677260018               0.4%               98.1%
## PC38 PC38   0.479324825550777               0.4%               98.5%
## PC39 PC39   0.448037825043289               0.3%               98.8%
## PC40 PC40   0.402783459208605               0.3%               99.0%
## PC41 PC41   0.374710302632229               0.2%               99.3%
## PC42 PC42   0.350144663500462               0.2%               99.5%
## PC43 PC43   0.290208268035153               0.1%               99.6%
## PC44 PC44   0.273524530090223               0.1%               99.7%
## PC45 PC45   0.250637705312012               0.1%               99.8%
## PC46 PC46   0.207493236221493               0.1%               99.9%
## PC47 PC47   0.184398472093357               0.1%               99.9%
## PC48 PC48   0.153958661315767               0.0%              100.0%
## PC49 PC49   0.116576996219424               0.0%              100.0%
## PC50 PC50 1.1368521365537e-15               0.0%              100.0%

8.2 PCoA

A wrapper for conduction 2D and 3D Principal Coordinate Analysis.

result <- dimred_pcoa(MAE,
                      tax_level="genus",
                      color="AGE",
                      shape="DISEASE",
                      axx=1,
                      axy=2,
                      method="bray")
#result$plot
result$table
##            Axis    Eigenvalue Variance Explained Cumulative Variance
## Axis.1   Axis.1  3.6608828752              21.0%               21.0%
## Axis.2   Axis.2  2.7032255621              15.6%               36.5%
## Axis.3   Axis.3  1.6483657088               9.7%               46.2%
## Axis.4   Axis.4  0.8576655542               5.3%               51.5%
## Axis.5   Axis.5  0.7871770113               4.9%               56.4%
## Axis.6   Axis.6  0.7508249149               4.7%               61.0%
## Axis.7   Axis.7  0.5075916114               3.3%               64.3%
## Axis.8   Axis.8  0.4378276824               2.9%               67.2%
## Axis.9   Axis.9  0.4027891452               2.7%               70.0%
## Axis.10 Axis.10  0.3366576652               2.3%               72.3%
## Axis.11 Axis.11  0.3124021698               2.2%               74.5%
## Axis.12 Axis.12  0.2567275704               1.9%               76.4%
## Axis.13 Axis.13  0.2339137302               1.8%               78.2%
## Axis.14 Axis.14  0.2021360485               1.6%               79.8%
## Axis.15 Axis.15  0.1694909671               1.4%               81.2%
## Axis.16 Axis.16  0.1490156377               1.3%               82.5%
## Axis.17 Axis.17  0.1389118262               1.2%               83.7%
## Axis.18 Axis.18  0.1128957621               1.1%               84.8%
## Axis.19 Axis.19  0.1054818971               1.1%               85.9%
## Axis.20 Axis.20  0.0988700644               1.0%               86.9%
## Axis.21 Axis.21  0.0804137436               0.9%               87.8%
## Axis.22 Axis.22  0.0643054979               0.8%               88.6%
## Axis.23 Axis.23  0.0518703079               0.8%               89.4%
## Axis.24 Axis.24  0.0463030384               0.7%               90.1%
## Axis.25 Axis.25  0.0362393545               0.7%               90.8%
## Axis.26 Axis.26  0.0320134656               0.6%               91.4%
## Axis.27 Axis.27  0.0215820244               0.6%               92.0%
## Axis.28 Axis.28  0.0194574297               0.6%               92.6%
## Axis.29 Axis.29  0.0145135847               0.5%               93.1%
## Axis.30 Axis.30  0.0109599643               0.5%               93.6%
## Axis.31 Axis.31  0.0058786707               0.5%               94.1%
## Axis.32 Axis.32  0.0039309240               0.5%               94.6%
## Axis.33 Axis.33  0.0017409135               0.5%               95.1%
## Axis.34 Axis.34  0.0009556269               0.5%               95.5%
## Axis.35 Axis.35  0.0000000000               0.5%               96.0%
## Axis.36 Axis.36 -0.0009889783               0.4%               96.4%
## Axis.37 Axis.37 -0.0048938884               0.4%               96.9%
## Axis.38 Axis.38 -0.0054299974               0.4%               97.3%
## Axis.39 Axis.39 -0.0096615215               0.4%               97.6%
## Axis.40 Axis.40 -0.0149876621               0.4%               98.0%
## Axis.41 Axis.41 -0.0191369295               0.3%               98.3%
## Axis.42 Axis.42 -0.0259358536               0.3%               98.6%
## Axis.43 Axis.43 -0.0269433021               0.3%               98.9%
## Axis.44 Axis.44 -0.0315780647               0.3%               99.2%
## Axis.45 Axis.45 -0.0359347630               0.3%               99.4%
## Axis.46 Axis.46 -0.0378122785               0.2%               99.6%
## Axis.47 Axis.47 -0.0438677952               0.2%               99.8%
## Axis.48 Axis.48 -0.0463892695               0.2%              100.0%
## Axis.49 Axis.49 -0.0554065217               0.0%              100.0%
## Axis.50 Axis.50 -0.0825914334               0.0%              100.0%

8.3 t-SNE

A wrapper for conduction 2D and 3D t-distributed stochastic neighbor embedding.

p <- dimred_tsne(MAE,
                 tax_level="phylum",
                 color="AGE",
                 shape="GROUP",
                 k="3D",
                 initial_dims=30,
                 perplexity=10,
                 datatype="logcpm")
p
## $plot
## 
## $data
##                      X           Y           Z
## subject_1    93.460893  -36.105240  148.508659
## subject_2    79.839896   24.418069  164.634084
## subject_3    99.356319   42.826357  379.480432
## subject_4   -97.600202 -189.783423 -191.845206
## subject_5   -92.437016 -105.956728 -199.181684
## subject_6  -156.334444  -91.215262  104.144116
## subject_7  -218.662388   22.083677   20.977972
## subject_8   -75.757465   57.662035   61.538745
## subject_9   -79.616432    2.506652  137.246698
## subject_10 -172.305276  130.304228   20.622562
## subject_11 -212.876501  145.993465   67.668641
## subject_12  -43.161175  -91.919063 -198.021683
## subject_13 -420.636164  269.635196  109.657138
## subject_14 -111.079619  -30.254261  -74.191604
## subject_15  172.213557  190.430264 -289.122242
## subject_16  307.724481  -67.932123 -113.663326
## subject_17   -4.545663 -319.553695   -4.007610
## subject_18  169.072821  297.092485    5.413230
## subject_19  213.979945  212.473244 -291.378514
## subject_20  156.118266  254.842092   -8.707735
## subject_21   76.800410 -183.317665   17.332271
## subject_22 -402.550055  303.236047   80.886805
## subject_23  -18.848420  150.882634  126.333619
## subject_24  210.393912 -216.055596  -74.908523
## subject_25  -33.452070  208.481118  126.212301
## subject_26   37.298489 -217.410404  -30.287460
## subject_27   87.424384   31.392003  332.151544
## subject_28   13.399714 -264.660718  -22.710427
## subject_29  105.225874  114.123267  188.585935
## subject_30  222.532187   -7.205219 -400.099840
## subject_31   43.454748 -334.298866  169.924575
## subject_32 -156.052472  170.944447  -38.621532
## subject_33    3.476256 -360.367861   64.368685
## subject_34 -496.307882  318.736246  118.387285
## subject_35 -462.958445  246.868574   72.898518
## subject_36  231.893939 -260.885491  -73.101109
## subject_37  278.515901 -165.813169  -89.472847
## subject_38  -61.520521   13.441413   31.867345
## subject_39   55.468445   -6.855486  235.754241
## subject_40   -2.632249   49.054492 -174.718793
## subject_41 -110.581622  -39.114136  111.943784
## subject_42  111.470676 -113.289610   76.768541
## subject_43   61.483198 -273.699821  197.937939
## subject_44  254.100462  -66.039970 -106.815351
## subject_45  224.575314  -49.406241 -373.307354
## subject_46   74.870685   52.971504  -43.484427
## subject_47  -65.386158  -53.995891  -81.198354
## subject_48  126.102585   29.111353  -60.790196
## subject_49  -83.083113  165.613292 -134.302017
## subject_50   68.131994   40.011785  -97.307829

9 Differential Analysis

Here in animalcules, we provide a DESeq2-based differential abundance analysis. Users can choose the target variable, covariate variable, taxonomy level, minimum count cut-off, and an adjusted p-value threshold. The analysis report will output not only the adjusted p-value and log2-fold-change of the microbes, but also the percentage, prevalence, and the group size-adjusted fold change.

p <- differential_abundance(MAE,
                            tax_level="phylum",
                            input_da_condition=c("DISEASE"),
                            min_num_filter = 2,
                            input_da_padj_cutoff = 0.5)
p
##          microbe  padj pValue log2FoldChange positive negative prevalence
## 1 Actinobacteria 0.206 0.0716          0.704    28/28    22/22    100.00%
## 2     Ascomycota 0.206 0.1030         -0.372    28/28    22/22    100.00%
## 3  Basidiomycota 0.206 0.0874         -1.460    19/28    15/22     68.00%
## 4     Firmicutes 0.206 0.0850          0.817    28/28    22/22    100.00%
## 5         others 0.206 0.0783         -0.479    28/28    22/22    100.00%
## 6 Proteobacteria 0.260 0.1560         -0.649    28/28    22/22    100.00%
##   Group Size adjusted fold change
## 1                               1
## 2                               1
## 3                               1
## 4                               1
## 5                               1
## 6                               1

10 Biomarker

One unique feature of animalcules is the biomarker identification module built on machine learning models. Users can choose one classification model from logistic regression, gradient boosting machine, or random forest to identify a microbes biomarker list. The feature importance score for each microbe will be provided. To evaluate the biomarker performance, the ROC plot and the AUC value using cross-validation outputs are shown to users.

10.1 Train biomarker

p <- find_biomarker(MAE,
                    tax_level="genus",
                    input_select_target_biomarker=c("SEX"),
                    nfolds = 3,
                    nrepeats = 3,
                    seed = 99,
                    percent_top_biomarker = 0.2,
                    model_name = "logistic regression")
# biomarker
p$biomarker
##  [1] "Gloeophyllum"        "Lactobacillus"       "Alphapapillomavirus"
##  [4] "Dialister"           "Escherichia"         "Aspergillus"        
##  [7] "Haemophilus"         "Xanthomonas"         "Malassezia"         
## [10] "Veillonella"         "Cupriavidus"
# importance plot
p$importance_plot

# ROC plot
p$roc_plot

11 Toy Dataset

animalcules.rds is an .rds file that contains three tables: count_table, gene_expression_table and metadata_table. Users could build their own MAE object using the code below:

# data_raw <-
#     base::system.file("extdata/animalcules.rds", package = "animalcules") %>%
#     base::readRDS()
# 
# se_mgx <-
#     magrittr::use_series(data_raw, count_table) %>%
#     base::data.matrix() %>%
#     S4Vectors::SimpleList() %>%
#     magrittr::set_names("MGX")
# 
# se_ge <-
#     magrittr::use_series(data_raw, gene_expression_table) %>%
#     base::data.matrix() %>%
#     S4Vectors::SimpleList() %>%
#     magrittr::set_names("GeneExpression")
# 
# se_colData <-
#     magrittr::use_series(data_raw, metadata_table) %>%
#     S4Vectors::DataFrame()
# 
# se_rowData <-
#     magrittr::use_series(data_raw, tax_table) %>%
#     base::data.frame() %>%
#     dplyr::mutate_all(as.character) %>%
#     dplyr::select(superkingdom, phylum, class, order, family, genus) %>%
#     S4Vectors::DataFrame()
# 
# microbe_se <-
#     SummarizedExperiment::SummarizedExperiment(assays = se_mgx,
#                                                colData = se_colData,
#                                                rowData = se_rowData)
# 
# host_se <-
#     SummarizedExperiment::SummarizedExperiment(assays = se_ge,
#                                                colData = se_colData)
# 
# mae_experiments <-
#     S4Vectors::SimpleList(MicrobeGenetics = microbe_se, HostGenetics = host_se)
# 
# MAE <-
#     MultiAssayExperiment::MultiAssayExperiment(experiments = mae_experiments,
#                                                colData = se_colData)

## usethis::use_data(MAE)

# saveRDS(MAE, "extdata/MAE.rds")

12 Session Info

sessionInfo()
## R version 3.5.2 (2018-12-20)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Mojave 10.14.2
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
##  [1] grid      parallel  stats4    stats     graphics  grDevices utils    
##  [8] datasets  methods   base     
## 
## other attached packages:
##  [1] DMwR_0.4.1                  animalcules_0.99.0         
##  [3] plotROC_2.2.1               forcats_0.4.0              
##  [5] DESeq2_1.22.2               ape_5.3                    
##  [7] vegan_2.5-4                 permute_0.9-5              
##  [9] caret_6.0-82                lattice_0.20-38            
## [11] reshape2_1.4.3              tsne_0.1-3                 
## [13] plotly_4.8.0                ggplot2_3.1.0              
## [15] dplyr_0.8.0.1               usethis_1.4.0              
## [17] MultiAssayExperiment_1.8.3  SummarizedExperiment_1.12.0
## [19] DelayedArray_0.8.0          BiocParallel_1.16.6        
## [21] matrixStats_0.54.0          Biobase_2.42.0             
## [23] GenomicRanges_1.34.0        GenomeInfoDb_1.18.2        
## [25] IRanges_2.16.0              S4Vectors_0.20.1           
## [27] BiocGenerics_0.28.0         tibble_2.1.1               
## [29] magrittr_1.5                BiocStyle_2.10.0           
## 
## loaded via a namespace (and not attached):
##   [1] backports_1.1.3        Hmisc_4.2-0            plyr_1.8.4            
##   [4] lazyeval_0.2.2         splines_3.5.2          crosstalk_1.0.0       
##   [7] digest_0.6.18          foreach_1.4.4          htmltools_0.3.6       
##  [10] gdata_2.18.0           checkmate_1.9.1        memoise_1.1.0         
##  [13] covr_3.2.1             cluster_2.0.7-1        ROCR_1.0-7            
##  [16] limma_3.38.3           remotes_2.0.2          recipes_0.1.5         
##  [19] annotate_1.60.1        gower_0.2.0            xts_0.11-2            
##  [22] prettyunits_1.0.2      colorspace_1.4-1       blob_1.1.1            
##  [25] xfun_0.5               callr_3.1.1            crayon_1.3.4          
##  [28] RCurl_1.95-4.12        jsonlite_1.6           genefilter_1.64.0     
##  [31] zoo_1.8-4              survival_2.43-3        iterators_1.0.10      
##  [34] glue_1.3.1             gtable_0.3.0           ipred_0.9-8           
##  [37] zlibbioc_1.28.0        XVector_0.22.0         pkgbuild_1.0.2        
##  [40] rentrez_1.2.1          quantmod_0.4-13        abind_1.4-5           
##  [43] scales_1.0.0           DBI_1.0.0              Rcpp_1.0.1            
##  [46] viridisLite_0.3.0      xtable_1.8-3           htmlTable_1.13.1      
##  [49] foreign_0.8-71         bit_1.1-14             Formula_1.2-3         
##  [52] DT_0.5                 lava_1.6.5             prodlim_2018.04.18    
##  [55] glmnet_2.0-16          rex_1.1.2              htmlwidgets_1.3       
##  [58] httr_1.4.0             gplots_3.0.1.1         RColorBrewer_1.1-2    
##  [61] acepack_1.4.1          pkgconfig_2.0.2        XML_3.98-1.19         
##  [64] nnet_7.3-12            locfit_1.5-9.1         labeling_0.3          
##  [67] later_0.8.0            tidyselect_0.2.5       rlang_0.3.2           
##  [70] AnnotationDbi_1.44.0   munsell_0.5.0          tools_3.5.2           
##  [73] cli_1.1.0              generics_0.0.2         RSQLite_2.1.1         
##  [76] devtools_2.0.1         evaluate_0.13          stringr_1.4.0         
##  [79] yaml_2.2.0             ModelMetrics_1.2.2     processx_3.3.0        
##  [82] knitr_1.22             bit64_0.9-7            fs_1.2.6              
##  [85] caTools_1.17.1.2       purrr_0.3.2            nlme_3.1-137          
##  [88] mime_0.6               compiler_3.5.2         rstudioapi_0.10       
##  [91] curl_3.3               testthat_2.0.1         geneplotter_1.60.0    
##  [94] stringi_1.4.3          ps_1.3.0               desc_1.2.0            
##  [97] Matrix_1.2-16          shinyjs_1.0            pillar_1.3.1          
## [100] BiocManager_1.30.4     data.table_1.12.0      bitops_1.0-6          
## [103] httpuv_1.5.0           R6_2.4.0               latticeExtra_0.6-28   
## [106] promises_1.0.1         bookdown_0.9           KernSmooth_2.23-15    
## [109] gridExtra_2.3          sessioninfo_1.1.1      codetools_0.2-16      
## [112] gtools_3.8.1           MASS_7.3-51.1          assertthat_0.2.1      
## [115] pkgload_1.0.2          rprojroot_1.3-2        withr_2.1.2           
## [118] GenomeInfoDbData_1.2.0 mgcv_1.8-27            rpart_4.1-13          
## [121] timeDate_3043.102      tidyr_0.8.3            class_7.3-15          
## [124] rmarkdown_1.11         TTR_0.23-4             shiny_1.2.0           
## [127] lubridate_1.7.4        base64enc_0.1-3